home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / rbbs / lrge174.zip / MAKEFIDX.MRG < prev    next >
Text File  |  1992-10-20  |  12KB  |  311 lines

  1. * ------------[ BLED merge (c) Ken Goosens ]-------------
  2. * Merge this against MAKEFIDX.BAS to produce MAKEFIDX.NEW
  3. * MAKEFIDX.BAS:  Date 11-20-1990  Size 13219 bytes
  4. * ------------[ Created 10-20-1992 20:02:40 ]------------
  5. * REPLACING old line(s) by new
  6. DECLARE SUB TRIM (TRIM.PARM$)
  7. DECLARE SUB BRKFNAME (FILENAME$, DRVPATH$, PREFIX$, EXTENSION$, FOR.JOINING%)
  8. DECLARE SUB TRIMTRAIL (TRIM.PARM$, TRIM.THIS$)
  9. DECLARE SUB FINDLAST (LOOK.IN$, LOOK.FOR$, WHERE.FOUND%, NUM.FINDS%)
  10. DEFINT A-Z
  11. DIM FileSpec$(999)
  12. DIM FileDir$(255)
  13. DIM LocationIndex$(999)
  14. TRUE = -1
  15. FALSE = 0
  16. WriteMode$ = "REPLACE"
  17. NameFile$ = "FIDX.DEF"
  18. LocationFile$ = "LIDX.DEF"
  19. DirString$ = "DIRECTORY OF"                                          ' 0216
  20. SHARING = FALSE
  21. * ------[ first line different ]------
  22. NumLocations& = 0                                                    ' LRGE174/YB102001
  23. NumFileSpecs& = 0                                                    ' LRGE174/YB102001
  24. NumFileDirs = 0
  25. StartCol = 1                                                         ' 0224
  26. ConfigFile$ = "MAKEFIDX.CFG"
  27. PassedArguments$ = COMMAND$
  28. PassedArguments$ = UCASE$(PassedArguments$) 
  29. X = INSTR(PassedArguments$,"/B")
  30. RunBatch = (X > 0)
  31. IF RunBatch THEN 
  32.    PassedArguments$ = LEFT$(PassedArguments$, X-1) + RIGHT$(PassedArguments$,Len(PassedArguments$)-X-1)
  33. END IF
  34. IF PassedArguments$ <> "" THEN
  35.    ConfigFile$ = PassedArguments$
  36. END IF
  37.  
  38. ON ERROR GOTO 40000
  39. IF SHARING THEN
  40.    OPEN ConfigFile$ FOR INPUT SHARED AS #1
  41. ELSE
  42.    OPEN ConfigFile$ FOR INPUT AS #1
  43. END IF
  44. ON ERROR GOTO 0
  45. WHILE NOT EOF(1)
  46.    LINE INPUT #1, A$
  47.    X$ = LEFT$(A$, 1)
  48.    IF X$ <> "" AND X$ <> "*" THEN
  49.       A$ = UCASE$(A$) 
  50.       IF LEFT$(A$,11) = "/WRITEMODE=" THEN
  51.          WriteMode$ = MID$(A$,12)
  52.          CALL TRIM (WriteMode$)
  53.       END IF
  54.       IF LEFT$(A$, 10) = "/NAMEFILE=" THEN
  55.          NameFile$ = MID$(A$, 11)
  56.          CALL TRIM(NameFile$)
  57.       END IF
  58.       IF LEFT$(A$, 14) = "/LOCATIONFILE=" THEN
  59.          LocationFile$ = MID$(A$, 15)
  60.          CALL TRIM(LocationFile$)
  61.       END IF
  62.       IF LEFT$(A$, 10) = "/FILESPEC=" THEN
  63.          X$ = MID$(A$, 11)
  64.          CALL TRIM(X$)
  65.          NumFileSpecs& = NumFileSpecs& + 1                           ' LRGE174/YB102001
  66.          FileSpec$(NumFileSpecs&) = X$                               ' LRGE174/YB102001
  67.       END IF
  68.       IF LEFT$(A$, 9) = "/FILEDIR=" THEN
  69.          X$ = MID$(A$, 10)
  70.          CALL TRIM(X$)
  71.          NumFileDirs = NumFileDirs + 1
  72.          FileDir$(NumFileDirs) = X$
  73.       END IF
  74.       IF LEFT$(A$,11) = "/DIRSTRING=" THEN                           ' 0216
  75.          X$ = MID$(A$,12)                                            ' 0216
  76.          CALL TRIM (X$)                                              ' 0216
  77.          DirString$ = X$                                             ' 0216
  78.          DirString$ = UCASE$(DirString$)                             ' 0220
  79.       END IF                                                         ' 0216
  80.    END IF
  81. WEND
  82. CLOSE 1
  83.  
  84. Replacing = (LEFT$(WriteMode$, 1) = "R")
  85.  
  86. PRINT "MAKEFIDX version 1.2 Nov 20, 1990 copyright (c) 1990 by Ken Goosens"
  87. PRINT "an RBBS utility to make files for fast directory searches"
  88. PRINT
  89. PRINT "Modified by Yaser Behbehani on October 20, 1992"              ' LRGE174/YB102001
  90. PRINT "for large FIDX/LIDX files"                                    ' LRGE174/YB102001
  91. PRINT                                                                ' LRGE174/YB102001
  92. PRINT "On this run"
  93. IF Replacing THEN
  94.    PRINT "Overwriting data files"
  95. ELSE
  96.    PRINT "Adding to data files"
  97. END IF
  98. PRINT "Configuration file used ....... ";ConfigFile$
  99. PRINT "Name of list of files ......... "; NameFile$
  100. PRINT "Name of list of locations ..... "; LocationFile$
  101. PRINT "# of DOS directories to process"; NumFileSpecs&
  102. PRINT "# of file lists to process ...."; NumFileDirs
  103. PRINT
  104. IF NOT RunBatch THEN
  105.    INPUT "A to abort, anything else runs"; ANS$
  106.    ANS$ = UCASE$(ANS$)
  107.    IF ANS$ = "A" THEN END
  108. END IF
  109.  
  110. 'NumFileSpecs& = 2
  111. 'FileSpec$(1) = "C:\TEMP\"
  112. 'FileSpec$(2) = "C:\UTILS\"
  113. IF Replacing THEN
  114.    ON ERROR GOTO 40100
  115.    KILL NameFile$
  116.    KILL LocationFile$
  117.    ON ERROR GOTO 0
  118. ELSE
  119.    IF SHARING THEN
  120.       OPEN LocationFile$ FOR INPUT SHARED AS #1
  121.    ELSE
  122.       OPEN LocationFile$ FOR INPUT AS #1
  123.    END IF
  124.    PRINT "Loading existing locations..."
  125.    WHILE NOT EOF(1)
  126.       LINE INPUT #1, A$
  127.       CALL TRIM(A$)
  128.       NumLocations& = NumLocations& + 1                              ' LRGE174/YB102001
  129.       LocationIndex$(NumLocations&) = A$                             ' LRGE174/YB102001
  130.    WEND
  131.    CLOSE 1
  132.    PRINT STR$(NumLocations&); " locations loaded"                    ' LRGE174/YB102001
  133. END IF
  134.  
  135. IF SHARING THEN
  136.    OPEN NameFile$ FOR RANDOM SHARED AS #2 LEN = 18
  137.    OPEN LocationFile$ FOR RANDOM SHARED AS #3 LEN = 66
  138. ELSE
  139.    OPEN NameFile$ FOR RANDOM AS #2 LEN = 18
  140.    OPEN LocationFile$ FOR RANDOM AS #3 LEN = 66
  141. END IF
  142. FIELD 2, 18 AS NameRec$
  143. FIELD 3, 66 AS LocationRec$
  144. MID$(NameRec$, 17, 2) = CHR$(13) + CHR$(10)
  145. MID$(LocationRec$, 64, 3) = "." + CHR$(13) + CHR$(10)
  146. NumRecsNameFile& = LOF(2) / 18                                       ' LRGE174/YB102001
  147. NumRecsLocationFile& = LOF(3) / 66                                   ' LRGE174/YB102001
  148.  
  149. InFile$ = "IDX.$$$"
  150. FOR ix = 1 TO NumFileSpecs&                                          ' LRGE174/YB102001
  151.    PRINT "Processing filespec "; FileSpec$(ix) ;                     ' 112090
  152. '  SHELL "DIR " + FileSpec$(ix) + " > IDX.$$$"
  153. '  GOSUB ProcessFile
  154.    GOSUB ProcessDir                                                  ' 112090
  155. NEXT
  156.  
  157. FOR ix = 1 TO NumFileDirs
  158.    InFile$ = FileDir$(ix)
  159.    PRINT "Processing file list "; FileDir$(ix) ;                     ' 112090
  160.    GOSUB ProcessFile
  161. NEXT
  162.  
  163. END
  164.  
  165. ProcessDir:                                                          ' 112090
  166.  
  167.    CALL BRKFNAME (FileSpec$(ix),CurrentDrivePath$,Prefix$,Extension$,TRUE)
  168.    CALL FindFirstF(FileSpec$(ix)+CHR$(0),0,RtnCode)
  169.    IF RtnCode <> 0 THEN
  170.       PRINT
  171.       PRINT "   No files found"
  172.       RETURN
  173.    END IF
  174.    GOSUB SetLocIndex
  175.    RecCt = 0
  176.    PrtCol = POS(0) + 1                                               ' 112090
  177.    WHILE RtnCode = 0
  178.       RecCt = RecCt + 1                                              ' 112090
  179.       LOCATE ,PrtCol                                                 ' 112090
  180.       PRINT RecCt ;                                                  ' 112090
  181.       FileName$ = SPACE$(12)
  182.       CALL GetNameF (FileName$,FLen)
  183.       FileName$ = LEFT$(FileName$,FLen)
  184.       GOSUB AddFileName
  185.       CALL FindNextF (RtnCode)
  186.    WEND
  187.  
  188.    PRINT
  189.  
  190. RETURN
  191.  
  192. ProcessFile:
  193.  
  194.    ON ERROR GOTO 40200                                               ' 111990
  195.    IF SHARING THEN
  196.       OPEN InFile$ FOR INPUT SHARED AS #1
  197.    ELSE
  198.       OPEN InFile$ FOR INPUT AS #1
  199.    END IF
  200.    ON ERROR GOTO 0                                                   ' 111990
  201.    RecCt = 0                                                         ' 112090
  202.    PrtCol = POS(0) + 1                                               ' 112090
  203.    WHILE NOT EOF(1)
  204.       LINE INPUT #1, A$
  205.       RecCt = RecCt + 1                                              ' 112090
  206.       LOCATE ,PrtCol                                                 ' 112090
  207.       PRINT RecCt ;                                                  ' 112090
  208.       X$ = UCASE$(A$)
  209.       X = INSTR(X$, DirString$)                                      ' 0216
  210.       IF X > 0 THEN                                                  ' 0224
  211.          IF LEFT$(X$,X-1) = SPACE$(X-1) THEN                         ' 0224
  212.             DrivePath$ = MID$(A$, X + LEN(DirString$))               ' 0216
  213.             CALL TRIM(DrivePath$)
  214.             IF LEFT$(DrivePath$,3) <> "M! " THEN                     ' 0217
  215.                IF INSTR(DrivePath$,"*") > 0 OR INSTR(DrivePath$,"?") > 0 THEN  ' 0216
  216.                   CALL BRKFNAME (DrivePath$,RtnDrivePath$,RtnPrefix$,RtnExt$,TRUE) ' 0216
  217.                   DrivePath$ = RtnDrivePath$                         ' 0216
  218.                END IF
  219.                IF INSTR(DrivePath$, "\") > 0 THEN
  220.                   IF RIGHT$(DrivePath$, 1) <> "\" THEN
  221.                      DrivePath$ = DrivePath$ + "\"
  222.                   END IF
  223.                END IF
  224.             END IF                                                   ' 0217
  225.             CurrentDrivePath$ = DrivePath$
  226.             GOSUB SetLocIndex
  227.             GOTO DoneEntry
  228.          END IF                                                      ' 0224
  229.       END IF
  230.       IF INSTR(" .", LEFT$(A$, 1)) > 0 THEN
  231.          GOTO DoneEntry
  232.       END IF
  233.       IF LEN(A$) < StartCol THEN                                     ' 0224
  234.          GOTO DoneEntry                                              ' 0224
  235.       END IF                                                         ' 0224
  236.       IF StartCol > 1 THEN                                           ' 0224
  237.          A$ = MID$(A$,StartCol)                                      ' 0224
  238.       END IF                                                         ' 0224
  239.       X = INSTR(A$, " ")
  240.       IF X = 0 THEN                                                  ' 0217
  241.          X = LEN(A$) + 1                                             ' 0217
  242.       ELSE
  243.          IF X < 13 THEN
  244.             FileName$ = LEFT$(A$, 12)
  245.             IF INSTR(FileName$, ".") = 0 AND MID$(FileName$, 9, 1) = " " AND MID$(FileName$, 10, 1) <> " " THEN
  246.                MID$(FileName$, X) = "." + MID$(FileName$, 10) + SPACE$(9 - X)
  247.             ELSE
  248.                FileName$ = LEFT$(A$, X - 1)
  249.             END IF
  250.             GOSUB AddFileName
  251.             GOTO DoneEntry
  252.          END IF
  253.       END IF                                                         ' 0217
  254.       FileName$ = LEFT$(A$, X - 1)
  255.       CALL BRKFNAME (FileName$,RtnDrivePath$,RtnPrefix$,RtnExt$,TRUE) ' 0217
  256.       IF RtnDrivePath$ <> "" THEN                                    ' 0217
  257.          DrivePath$ = RtnDrivePath$                                  ' 0217
  258.          FileName$ = RtnPrefix$ + RtnExt$                            ' 0217
  259.       END IF                                                         ' 0217
  260.       GOSUB AddFileName
  261. DoneEntry:
  262.    WEND
  263. QuitEntry:                                                           ' 111990
  264.    ON ERROR GOTO 0                                                   ' 111990
  265.    CLOSE 1
  266.    PRINT                                                             ' 111990
  267. RETURN
  268.  
  269. SetPathName:
  270.  
  271.    CALL BRKFNAME(FileName$, FileDrivePath$, FilePrefix$, FileExt$, TRUE)
  272.    IF FileDrivePath$ <> "" THEN
  273.       CurrentDrivePath$ = FileDrivePath$
  274.       GOSUB SetLocIndex
  275.       FileName$ = FilePrefix$ + FileExt$
  276.    ELSE
  277.       CurrentDrivePath$ = DrivePath$
  278.    END IF
  279.  
  280. RETURN
  281.  
  282. AddFileName:
  283.  
  284.    GOSUB SetPathName
  285.    MID$(NameRec$, 1, 16) = SPACE$(16)
  286.    MID$(NameRec$, 1, 12) = FileName$
  287.    X$ = MID$(STR$(Location&), 2)                                     ' LRGE174/YB102001
  288.    X$ = SPACE$(4 - LEN(X$)) + X$
  289.    MID$(NameRec$, 13, 4) = X$
  290.    NumRecsNameFile& = NumRecsNameFile& + 1                           ' LRGE174/YB102001
  291.    PUT 2, NumRecsNameFile&                                           ' LRGE174/YB102001
  292.  
  293. RETURN
  294.  
  295. SetLocIndex:
  296.  
  297.    IF CurrentDrivePath$ = LocationIndex$(Location&) THEN RETURN      ' LRGE174/YB102001
  298.    LocationIndex$(NumRecsLocationFile& + 1) = CurrentDrivePath$      ' LRGE174/YB102001
  299.    Location& = 1                                                     ' LRGE174/YB102001
  300.    WHILE CurrentDrivePath$ <> LocationIndex$(Location&)              ' LRGE174/YB102001
  301.       Location& = Location& + 1                                      ' LRGE174/YB102001
  302.    WEND
  303.    IF Location& > NumRecsLocationFile& THEN                          ' LRGE174/YB102001
  304.       NumRecsLocationFile& = Location&                               ' LRGE174/YB102001
  305.       MID$(LocationRec$, 1, 63) = SPACE$(63)
  306.       MID$(LocationRec$, 1, 63) = CurrentDrivePath$
  307.       PUT 3, NumRecsLocationFile&                                    ' LRGE174/YB102001
  308.    END IF
  309.  
  310. RETURN
  311.